#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "registerdialog.h"
#include "forgotdialog.h"
#include "activitymonitor.h"
#include "windowmonitor.h"

#include<QLineEdit>
#include<QLabel>
#include<QVBoxLayout>
#include<QMessageBox>
#include<QFile>


// MainWindow::MainWindow(QWidget *parent)
//     : QMainWindow(parent)
//     , ui(new Ui::MainWindow)
// {
//     ui->setupUi(this);

//     ui->titleLabel->setAlignment(Qt::AlignCenter);
//     ui->titleLabel->setStyleSheet("font-size: 18px; font-weight: bold; margin: 10px");

//     ui->Username->setPlaceholderText("请输入用户名");
//     ui->Password->setPlaceholderText("请输入密码");
//     ui->Password->setEchoMode(QLineEdit::Password);

//     ui->Login->setEnabled(false);

//     QVBoxLayout *layout = new QVBoxLayout();
//     ui->myWidget->setLayout(layout);

//     layout->addWidget(ui->titleLabel);
//     layout->addSpacing(10);
//     layout->addWidget(ui->Username);
//     layout->addWidget(ui->usernameEdit);
//     layout->addSpacing(10);
//     layout->addWidget(ui->Password);
//     layout->addWidget(ui->passwordEdit);
//     layout->addSpacing(20);
//     layout->addWidget(ui->Login);
//     setWindowTitle("登录系统");
//     setFixedSize(300, 300);
// }

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    // 设置窗口标题和固定大小
    setWindowTitle("登录系统");
    setFixedSize(320, 420);  // 避免太小导致控件被裁剪

    // 设置标题样式
    ui->titleLabel->setAlignment(Qt::AlignCenter);
    ui->titleLabel->setStyleSheet("font-size: 18px; font-weight: bold; margin: 10px;");

    // 设置输入框占位符（只能用于 QLineEdit）
    ui->Username->setPlaceholderText("请输入用户名");
    ui->Password->setPlaceholderText("请输入密码");

    // 密码框隐藏输入
    ui->Password->setEchoMode(QLineEdit::Password);

    // 登录按钮初始禁用
    ui->Login->setEnabled(false);

    setupConnections();


    // 创建垂直布局并应用到 myWidget
    // QVBoxLayout *layout = new QVBoxLayout();
    // ui->myWidget->setLayout(layout);

    // 添加控件到布局（按顺序）
    // layout->addWidget(ui->titleLabel);
    // layout->addSpacing(10);

    // layout->addWidget(ui->Username);         // 显示"用户名:"
    // layout->addWidget(ui->usernameEdit);

    // layout->addSpacing(10);
    // layout->addWidget(ui->Password);         // 显示"密码:"
    // layout->addWidget(ui->passwordEdit);

    // layout->addSpacing(20);
    // layout->addWidget(ui->Login);


    //动态启用登录按钮
    // connect(ui->Username, &QLineEdit::textChanged, this, [this](){
    //     bool
    //         hasUser = !ui->usernameEdit->text().trimmed().isEmpty();
    //     bool
    //         hasPass = !ui->passwordEdit->text().trimmed().isEmpty();
    //     ui->Login->setEnabled(hasUser && hasPass);
    // });

    // connect(ui->Password, &QLineEdit::textChanged, this, [this](){
    //     bool
    //         hasUser = !ui->usernameEdit->text().trimmed().isEmpty();
    //     bool
    //         hasPass = !ui->passwordEdit->text().trimmed().isEmpty();
    //     ui->Login->setEnabled(hasUser && hasPass);
    // });
    // 连接信号
    // connect(m_windowMonitor, &WindowMonitor::activeWindowChanged,
    //         this, &MainWindow::onActiveWindowChanged);

    // // 开始监控
    // m_windowMonitor->startMonitoring();
}



MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::setupConnections()
{

    connect(ui->Login,&QPushButton::clicked,this,&MainWindow::onLoginClicked);
    connect(ui->Username,&QLineEdit::textChanged,this,&MainWindow::onUsernameTextChanged);
    connect(ui->Password,&QLineEdit::textChanged,this,&MainWindow::onPasswardTextChanged);
    connect(ui->Register,&QPushButton::clicked,this,&MainWindow::onRegisterClicked);
    connect(ui->Forgot,&QPushButton::clicked,this,&MainWindow::onForgotClicked);




}

// void MainWindow::onLoginClicked()
// {
//     QString username =ui->Username->text().trimmed();
//     QString password = ui->Password->text().trimmed();
//     if (username == "admin" && password == "123456" )
//     {
//         QMessageBox::information(this, "登录成功", "欢迎使用系统！" );
//     }
//     else
//     {
//         QMessageBox::warning(this, "登录失败", "用户名或密码错误！");
//     }
// }

void MainWindow::onLoginClicked()
{
    QString username = ui->Username->text().trimmed();
    QString password = ui->Password->text().trimmed();

    // 1. 检查输入是否为空
    if(username.isEmpty())
    {
        QMessageBox::warning(this, "输入错误", "请输入用户名！");
        return;
    }
    if
        (password.isEmpty())
    {
        QMessageBox::warning(this, "输入错误", "请输入密码！");
        return;
    }

    // 2. 打开 users.txt 文件
    QFile file("users.txt");
    if(!file.exists())
    {
        QMessageBox::warning(this, "登录失败", "用户数据未初始化，请先注册用户！");
        return;
    }

    if(!file.open(QIODevice::ReadOnly | QIODevice::Text))
    {
        QMessageBox::critical(this, "错误", "无法打开用户数据文件！");
        return;
    }

    QTextStream in(&file);
    QString line;
    bool found = false;

    // 3. 逐行读取并解析
    while ((line = in.readLine()) != nullptr)
    {
        line = line.trimmed();
        if (line.isEmpty()) continue;  // 跳过空行

        // 分割格式：昵称||密码||密保
        QStringList parts = line.split("||");
        if (parts.size() == 3)
        {
            QString savedUsername = parts[0].trimmed();
            QString savedPassword = parts[1].trimmed();

            // 4. 匹配用户名和密码
            if(savedUsername == username && savedPassword == password)
            {
                found = true;
                break;  // 找到就退出
            }
        }
    }

    file.close();

    // 5. 返回结果
    if(found)
    {
        QMessageBox::information(this, "登录成功", "欢迎使用监察系统！\n用户："+ username);
        // 可以在这里跳转到主界面
        // 创建 ActivityMonitor 实例
        // ActivityMonitor*activityMonitor = new ActivityMonitor();
        // activityMonitor->setAttribute(Qt::WA_DeleteOnClose); // 重要：自动清理

        // // 显示 ActivityMonitor 窗口
        // activityMonitor->show();

        // // 隐藏当前登录窗口
        // this->hide();

        // // 当主窗口关闭时，也关闭登录窗口
        // connect(activityMonitor, &ActivityMonitor::destroyed, this, &QWidget::close);
        WindowMonitor * windowmonitor =new WindowMonitor();
         windowmonitor->setAttribute(Qt::WA_DeleteOnClose);

        windowmonitor->show();
         this ->hide();
        connect(windowmonitor, &WindowMonitor::destroyed, this, &QWidget::close);



        // WindowMonitor* windowMonitor = new WindowMonitor(this);

        // // 🔥 启动窗口监控（必须调用！）
        // windowMonitor->startMonitoring();

        // // 连接信号：监听窗口切换事件
        // connect(windowMonitor, &WindowMonitor::activeWindowChanged, this, [this](const QString& windowTitle, quintptr windowId) {
        //     // 在这里处理窗口切换逻辑
        //     qDebug() << "【窗口切换】" << windowTitle << " | HWND:" << QString::number(windowId, 16);

        //     // 示例：你可以记录日志、判断是否违规程序等
        //     // if (windowTitle.contains("游戏", Qt::CaseInsensitive)) {
        //     //     QMessageBox::warning(this, "警告", "检测到违规程序：" + windowTitle);
        //     // }
        // });


    }
    else
    {
        QMessageBox::warning(this, "登录失败", "用户名或密码错误！");
    }
}

void MainWindow::onUsernameTextChanged()
{
    bool hasUser = !ui->usernameEdit->text().trimmed().isEmpty();
    bool hasPass = !ui->passwordEdit->text().trimmed().isEmpty();
    ui->Login->setEnabled(hasUser && hasPass);
}

void MainWindow::onPasswardTextChanged()
{
    bool hasUser = !ui->usernameEdit->text().trimmed().isEmpty();
    bool hasPass = !ui->passwordEdit->text().trimmed().isEmpty();
    ui->Login->setEnabled(hasUser && hasPass);
}

void MainWindow::onRegisterClicked()
{
    // 创建 RegisterDialog 对象，以模态方式弹出
    RegisterDialog dialog(this);

    // 执行对话框（exec() 会阻塞，直到对话框关闭）
    int result = dialog.exec();

    // 可选：根据用户操作做后续处理
    if
        (result == QDialog::Accepted) {
        // 用户点击了“注册”或“确定”
        // 你可以在这里处理注册成功后的逻辑
        qDebug() << "用户已注册！";
    }
    else if
        (result == QDialog::Rejected) {
        // 用户点击了“取消”或关闭了窗口
        // 什么也不做，回到主界面
    }
}

void MainWindow::onForgotClicked()
{

    ForgotDialog dialog(this);
    int result = dialog.exec();


}



